﻿//#include<iostream>
//#include<vector>
//using namespace std;
//
//#include"RBTree.h"
//
//void test1()
//{
//	const int N = 10000000;
//	vector<int> v;
//	v.reserve(N);
//	//srand(time(0));
//
//	for (size_t i = 0; i < N; i++)
//	{
//		v.push_back(rand() + i);
//		//cout << v.back() << endl;
//	}
//
//	size_t begin = clock();
//	RBTree<int, int> t;
//	for (auto e : v)
//	{
//		if (e == 29365)
//		{
//			int i = 0;
//		}
//
//		t.Insert(make_pair(e, e));
//		//cout << "Insert:" << e << "->" << t.IsBalance() << endl;
//	}
//	size_t end = clock();
//	cout << "Insert时间:" << end - begin << endl;
//
//	cout << "是否平衡：" << t.IsBalance() << endl;
//	cout << "高度：" << t.Height() << endl;
//	cout << "个数：" << t.Size() << endl;
//
//	size_t begin1 = clock();
//	for (auto e : v)
//	{
//		t.Find(e);
//	}
//	/*for (size_t i = 0; i < N; i++)
//	{
//		t.Find((rand() + i));
//	}*/
//	size_t end1 = clock();
//
//	cout << "Find时间:" << end1 - begin1 << endl;
//}
//int main()
//{
//	test1();
//	return 0;
//}

#include<iostream>
#include<vector>
using namespace std;

#include"MyMap.h"
#include"MySet.h"
#include"RBTree.h"

void test_set()
{
	wh::set<int> s;
	s.insert(4);
	s.insert(1);
	s.insert(2);
	s.insert(3);
	s.insert(2);
	s.insert(0);
	s.insert(10);
	s.insert(5);

	wh::set<int>::iterator it = s.begin();
	while (it != s.end())
	{
		
		cout << *it << " ";
		++it;
	}
	cout << endl;

	wh::set<int>::iterator it1 = s.begin();
	while (it1 != s.end())
	{
		cout << *it1++ << " ";
		//it1++;
	}
	cout << endl;

	for (auto e : s)
	{
		cout << e << " ";
	}
	cout << endl;
}

void test_map()
{
	wh::map<string, string> dict;
	dict.insert(make_pair("sort", "排序"));
	dict.insert(make_pair("sort", "xx"));
	dict.insert(make_pair("left", "左"));
	dict.insert(make_pair("right", "右"));

	wh::map<string, string>::iterator it = dict.begin();
	while (it != dict.end())
	{
		// key޸
		//it->first += 'x';
		it->second += 'y';

		cout << it->first << ":" << it->second << endl;
		++it;
	}
	cout << endl;

	string arr[] = { "西瓜", "香蕉","菠萝", "西瓜", "橙子", "香蕉", "西瓜", "西瓜", "榴莲", "西瓜", "香蕉", "石榴", "菠萝" };
	wh::map<string, int> countMap;
	for (auto& e : arr)
	{
		countMap[e]++;
	}

	for (auto& kv : countMap)
	{
		cout << kv.first << ":" << kv.second << endl;
	}
	cout << endl;
}


int main()
{
	
	test_set();
	//test_map();
	return 0;
}